package com.saybiu.controller;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.JSONToken;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.saybiu.dao.UserDao;
import com.saybiu.domain.User;
import com.saybiu.domain.UserMeta;
import com.saybiu.response.ApiResult;
import com.saybiu.response.CommonCode;
import com.saybiu.utils.JedisUtils;
import com.saybiu.utils.JwtUtil;
import com.saybiu.utils.Utils;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import redis.clients.jedis.Jedis;

import javax.annotation.Resource;
import java.sql.SQLOutput;
import java.util.*;

/**
 * @Author: 王飞（改成你自己的姓名）
 * @Date: 2021/4/17 11:53 上午 （日期和时间）
 * 执行顺序
 * 拦截器 ------>ParseTokenHandlerMethodArgumentResolver ------> AOP(@Aspect) ------>controller
 *
 *
 * 如果控制器方法内添加了Integer userId，会自动获取到userId,不需要从前段传值
 * 此userId是从ParseTokenHandlerMethodArgumentResolver里解析token拿到的请求人id
 */
@Controller

public class TestController {


    @RequestMapping("user/login")
    @ResponseBody
    public Map login()
    {
        User user=new User();
        user.setUserId(123);
        user.setUserPhone("123");
        Map map=new HashMap();
        String token = JwtUtil.creatToken(user);
        Integer userId=user.getUserId();
        JedisUtils.insertRedis(token,userId);
        map.put("token",token);
        return map;
    }
//    @RequestMapping("aaa")
//    @ResponseBody
//    public void test(@RequestBody JSONObject jsonstring)
//    {
//        System.out.println(jsonstring.getString("userId"));
//        System.out.println(jsonstring);
//    }
//    @RequestMapping("upload")
//    @ResponseBody
//    public void test1(MultipartFile file)
//    {
//        String originalFilename = file.getOriginalFilename();
//        String type=originalFilename.substring(originalFilename.lastIndexOf("."));
//        System.out.println(file.getOriginalFilename());
//        System.out.println(type);
//        String date= Utils.toDate(new Date());
//        List<String> nameString=new ArrayList<>();
//        nameString.add(originalFilename);
//
//    }
//
//    /**
//     *
//     * @param user
//     * @return
//     * 创建用户
//     */
//    @PostMapping(value = "/users/")
//    @ResponseBody
//    public ApiResult add(@RequestBody User user )
//    {
//        return new ApiResult(CommonCode.SUCCESS,"创建用户成功");
//    }
//
//    /**
//     *
//     * @param userId
//     * @return
//     * 删除特定id的用户
//     */
//    @DeleteMapping(value ="/users/{id}")
//    @ResponseBody
//    public ApiResult delete(@PathVariable("id") Integer userId)
//    {
//        System.out.println(userId);
//        return new ApiResult(CommonCode.SUCCESS,"删除用户成功");
//    }
//
//    /**
//     * param:DELETE /users?sex=性别
//     * param:DELETE /users?age=年龄
//     * @param param
//     * @return
//     * 删除符合条件的用户
//     */
//    @DeleteMapping(value ="/users/")
//    @ResponseBody
//    public ApiResult deleteAll(@RequestBody JSONObject param)
//    {
//        return new ApiResult(CommonCode.SUCCESS,"删除用户成功");
//    }
//
//    /**
//     *
//     * @param userId
//     * @param user
//     * @return
//     * 更新特定id的用户信息
//     */
//    @PutMapping(value ="/users/{id}")
//    @ResponseBody
//    public ApiResult update(@PathVariable("id") Integer userId,@RequestBody User user)
//    {
//        return new ApiResult(CommonCode.SUCCESS,"更新用户成功");
//    }
//
//    /**
//     *
//     * @param userId
//     * @return
//     * 查找特定id的用户
//     */
//    @GetMapping(value ="/users/{id}")
//    @ResponseBody
//    public ApiResult search(@PathVariable("id") Integer userId)
//    {
//
//        return new ApiResult(CommonCode.SUCCESS,"查询查询成功"+userId);
//    }
//
//    /**
//     *
//     * @param param
//     * @return
//     * param:GET /users?sex=男
//     * param:GET /users?sort=desc
//     * param:GET /users?age=年龄
//     * param:GET /users?page=分页
//     */
//    @GetMapping(value ="/users/")
//    @ResponseBody
//    public List<User> searchAll(@RequestBody JSONObject param)
//    {
//        Map<String, Object> innerMap = param.getInnerMap();
//        return null;
//    }
//    @Resource
//    private UserDao userDao;
//    @RequestMapping(value ="/test1122")
//    @ResponseBody
//    public String test1122()
//    {
//        PageHelper.startPage(1,2);
//        List<User> userList= userDao.selectALL();
//        PageInfo pageInfo=new PageInfo(userList);
//        JSONObject jsonObject=new JSONObject();
//        jsonObject.put("userList",userList);
//        jsonObject.put("pages",pageInfo.getPages());
//        return jsonObject.toJSONString();
//    }


}
